package leetcode;

/**
 * 给你一个整数数组 nums 。
 * 如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ，就可以认为这是一组 好数对 。
 * 返回好数对的数目。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/number-of-good-pairs
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author Europa
 */
public class Num1512 {

    public int numIdenticalPairs(int[] nums) {
        int[] temp = new int[101];
        // 计算nums[i]中有几个值是一样的
        // 0表示该索引下一个值都没有, 1表示该索引下面有一个值, 以此类推
        for (int i : nums) {
            ++temp[i];
        }

        int count = 0;
        for (int i : temp) {
            if (i != 0) {
                // 没看懂
                count += (i * (i - 1) / 2);
            }
        }
        return count;

    }

    public int numIdenticalPairs1(int[] nums) {
        int x = 0;
        if (nums.length == 1) {
            return x;
        }
        for (int i = 0; i < nums.length; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                // 从i开始取值, 判断i后面有几个和i是一样的值
                if (nums[i] == nums[j]) {
                    ++x;
                }
            }
        }
        return x;
    }

    public static void main(String[] args) {
        Num1512 num1512 = new Num1512();
        int[] ints = {1, 2, 3, 1, 1, 3};
        int i = num1512.numIdenticalPairs(ints);
        System.out.println(i);
    }
}
